#include "comm.hpp"

int main()
{
    key_t k = getKey();
    printf("key: 0x%x\n", k);
    int shmid = getShm(k);
    printf("shmid: %d\n", shmid);

    sleep(5);
    char *start = (char *)attachShm(shmid);
    printf("attch success,address start:%p\n", start);

    // sleep(5);

    // 通信
    const char *message = "Hello server，我是另一个进程，我正在和你通信！";
    pid_t id = getpid();
    int cnt = 1;
    while (true)
    {
        sleep(3);
        snprintf(start, MAX_SIZE, "%s[pid:%d][消息编号:%d]", message, id, cnt++);
    }
    // 不需要再定义缓冲区，写到共享内存中。共享内存就可以当作用户层缓冲区，可以直接写入。跟管道不同！
    // char buffer[1024];
    // while (true)
    // {
    //     snprintf(start, sizeof(buffer), "%s[pid:%d][消息编号:%d]", message, id, cnt++);
    //     memcpy(start, buffer, strlen(buffer) + 1);
    // }

    // 去关联
    detachShm(start);
    // sleep(2);

    return 0;
}